package com.kds.smarthome.service;

import com.kds.smarthome.entity.QuartzJob;

import java.util.List;

/**
 * Quartz任务服务接口
 */
public interface QuartzJobService {

    /**
     * 获取所有任务列表
     */
    List<QuartzJob> getAllJobs();

    /**
     * 根据ID获取任务
     */
    QuartzJob getJobById(String jobId);

    /**
     * 添加任务
     */
    void addJob(QuartzJob job);

    /**
     * 更新任务
     */
    void updateJob(QuartzJob job);

    void removeAllJobs();

    /**
     * 删除任务
     */
    void deleteJob(String jobId);

    /**
     * 暂停任务
     */
    void pauseJob(String jobId);

    /**
     * 恢复任务
     */
    void resumeJob(String jobId);

    /**
     * 立即执行任务
     */
    void runJobNow(String jobId);

    /**
     * 根据条件查询任务列表
     */
    List<QuartzJob> getJobsByCondition(QuartzJob job);

    /**
     * 获取正在运行的任务列表
     */
    List<QuartzJob> getRunningJobs();

    /**
     * 检查CRON表达式是否有效
     */
    boolean checkCronExpression(String cronExpression);

    /**
     * 获取CRON表达式的下次执行时间列表
     */
    List<String> getNextExecuteTimeList(String cronExpression, Integer count);
}
